🎖️GitЯра🎖️
Node / meshtastic / Meshtastic-Android / files / .specify / extensions / verify / scripts / powershell / load-config.ps1
Displaying Raw • Download
.specify/extensions/verify/scripts/powershell/load-config.ps1 65a1f5ce4d0e4b8eafcd0bbfccafd41dc6ee888a (65a1f5ce) Text, 2.63 KB
T8b949e# load-config.ps1 — Load and validate the verify extension configuration.
T8b949e#
T8b949e# Reads report.max_findings from the YAML config file,
T8b949e# normalises YAML null sentinels, applies an optional environment
T8b949e# variable override (SPECKIT_VERIFY_MAX_FINDINGS), and validates
T8b949e# that a value is present before exporting it.
T8b949e#
T8b949e# Usage: load-config.ps1
T8b949e#
T8b949e# Exit codes:
T8b949e# 0 — configuration loaded successfully
T8b949e# 1 — config file missing, required value not set, or invalid value
Te6edf3$configFile Tb4b4b4= Ta5d6ff"Ta5d6ff.specify/extensions/verify/verify-config.ymlTa5d6ff"
Te6edf3$extensionFile Tb4b4b4= Ta5d6ff"Ta5d6ff.specify/extensions/verify/extension.ymlTa5d6ff"
Te6edf3$usingDefaults Tb4b4b4= Te6edf3$false
Tff7b72if Tb4b4b4(Tff7b72-not Tb4b4b4(Tffa657Test-Path Te6edf3$configFileTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tffa657Test-Path Te6edf3$extensionFileTb4b4b4) Tb4b4b4{
Te6edf3$usingDefaults Tb4b4b4= Te6edf3$true
Tb4b4b4} Tff7b72else Tb4b4b4{
Tffa657Write-Host Ta5d6ff"Ta5d6ff❌ Error: Configuration not found at Ta5d6ff$Ta5d6ffconfigFileTa5d6ff"
Tffa657Write-Host Ta5d6ff"Ta5d6ffRun 'specify extension add verify' to install and configureTa5d6ff"
Te6edf3exit Te6edf31
Tb4b4b4}
Tb4b4b4}
T8b949e# Read configuration values
T8b949e# Extract a YAML value for a key from a file using only built-in tools.
Tff7b72function Tffa657Get-YamlValue Tb4b4b4{
Tff7b72paramTb4b4b4(Tff7b72[string]Te6edf3$KeyTb4b4b4, Tff7b72[string]Te6edf3$FileTb4b4b4)
Te6edf3$lines Tb4b4b4= Tffa657Get-Content Te6edf3$File Te6edf3-ErrorAction Te6edf3SilentlyContinue
Tff7b72if Tb4b4b4(Tff7b72-not Te6edf3$linesTb4b4b4) Tb4b4b4{ Tff7b72return Ta5d6ff'' Tb4b4b4}
Te6edf3$match Tb4b4b4= Te6edf3$lines Tb4b4b4| Tffa657Select-String Te6edf3-Pattern Ta5d6ff"Ta5d6ff^\s*Ta5d6ff$Ta5d6ff{Key}:Ta5d6ff" Tb4b4b4| Tffa657Select-Object Te6edf3-Last Te6edf31
Tff7b72if Tb4b4b4(Tff7b72-not Te6edf3$matchTb4b4b4) Tb4b4b4{ Tff7b72return Ta5d6ff'' Tb4b4b4}
Te6edf3$raw Tb4b4b4= Te6edf3$matchTb4b4b4.Te6edf3Line Tff7b72-replace Ta5d6ff'^[^:]*:'Tb4b4b4, Ta5d6ff''
Te6edf3$raw Tb4b4b4= Te6edf3$rawTb4b4b4.Te6edf3TrimTb4b4b4(Tb4b4b4)
T8b949e# Strip surrounding double quotes
Tff7b72if Tb4b4b4(Te6edf3$rawTb4b4b4.Te6edf3Length Tff7b72-ge Te6edf32 Tff7b72-and Te6edf3$rawTb4b4b4.Te6edf3StartsWithTb4b4b4(Ta5d6ff'"'Tb4b4b4) Tff7b72-and Te6edf3$rawTb4b4b4.Te6edf3EndsWithTb4b4b4(Ta5d6ff'"'Tb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3$raw Tb4b4b4= Te6edf3$rawTb4b4b4.Te6edf3SubstringTb4b4b4(Te6edf31Tb4b4b4, Te6edf3$rawTb4b4b4.Te6edf3Length Tb4b4b4- Te6edf32Tb4b4b4)
Tb4b4b4}
Tff7b72return Te6edf3$raw
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3$usingDefaultsTb4b4b4) Tb4b4b4{
Te6edf3$maxFindings Tb4b4b4= Tffa657Get-YamlValue Te6edf3-Key Ta5d6ff'max_findings' Tff7b72-File Te6edf3$extensionFile
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3$maxFindings Tb4b4b4= Tffa657Get-YamlValue Te6edf3-Key Ta5d6ff'max_findings' Tff7b72-File Te6edf3$configFile
Tb4b4b4}
T8b949e# Treat YAML null sentinels as empty
Tff7b72if Tb4b4b4(Te6edf3$maxFindings Tff7b72-eq Ta5d6ff'null' Tff7b72-or Te6edf3$maxFindings Tff7b72-eq Ta5d6ff'~'Tb4b4b4) Tb4b4b4{
Te6edf3$maxFindings Tb4b4b4= Ta5d6ff''
Tb4b4b4}
T8b949e# Apply environment variable overrides
Tff7b72if Tb4b4b4(Te6edf3$env:SPECKIT_VERIFY_MAX_FINDINGS Tff7b72-ne Te6edf3$null Tff7b72-and Te6edf3$env:SPECKIT_VERIFY_MAX_FINDINGS Tff7b72-ne Ta5d6ff''Tb4b4b4) Tb4b4b4{
Te6edf3$maxFindings Tb4b4b4= Te6edf3$env:SPECKIT_VERIFY_MAX_FINDINGS
Tb4b4b4}
T8b949e# Validate configuration
Tff7b72if Tb4b4b4(Tff7b72-not Te6edf3$maxFindingsTb4b4b4) Tb4b4b4{
Tffa657Write-Host Ta5d6ff"Ta5d6ff❌ Error: Configuration value not setTa5d6ff"
Tffa657Write-Host Ta5d6ff"Ta5d6ffEdit Ta5d6ff$Ta5d6ffconfigFile and set 'report.max_findings'Ta5d6ff"
Te6edf3exit Te6edf31
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3$maxFindings Tff7b72-notmatch Ta5d6ff'^\d+$'Tb4b4b4) Tb4b4b4{
Tffa657Write-Host Ta5d6ff"Ta5d6ff❌ Error: 'report.max_findings' must be a positive integer, got 'Ta5d6ff$Ta5d6ffmaxFindings'Ta5d6ff"
Tffa657Write-Host Ta5d6ff"Ta5d6ffEdit Ta5d6ff$Ta5d6ffconfigFile and set 'report.max_findings' to a number (e.g. 50)Ta5d6ff"
Te6edf3exit Te6edf31
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3$usingDefaultsTb4b4b4) Tb4b4b4{
Tffa657Write-Host Ta5d6ff"Ta5d6ff⚠️ No config file found; using defaults from extension.ymlTa5d6ff"
Tb4b4b4}
Tffa657Write-Host Ta5d6ff"Ta5d6ff📋 Configuration loaded: max_findings=Ta5d6ff$Ta5d6ffmaxFindingsTa5d6ff"
Served by rngit 1.5.2 - Generated in 0.08s